package config

import (
	"os"

	golobbyConfig "github.com/golobby/config/v3"
	"github.com/golobby/config/v3/pkg/feeder"
)

type InitConfig struct {
	path string
}

func Create() *InitConfig {
	config := &InitConfig{}
	return config
}

func (c *InitConfig) SetPath(path string) {
	c.path = path
}

func (c *InitConfig) getPath() (string, error) {
	if _, err := os.Stat(".env"); err == nil {
		return ".env", nil
	}

	return "", nil
}

func (c *InitConfig) env(config interface{}) interface{} {
	env := feeder.DotEnv{Path: c.path}
	golobbyConfig.New().AddFeeder(env).AddStruct(config).Feed()
	return config
}

func (c *InitConfig) Load(config interface{}) {
	if c.path == "" {
		c.path, _ = c.getPath()
	}
	c.env(config)
}
